<?php
header("Content-type: text/html; charset=UTF-8");

error_reporting(E_ALL);
function jsAddSlashes($str) {
    $pattern = array(
        "/\\\\/", "/\n/", "/\r/", "/\"/", "/\'/", "/&/", "/</", "/>/"
    );
    $replace = array(
        "\\\\\\\\", "\\n", "\\r", "\\\"", "\\'", "\\x26", "\\x3C", "\\x3E"
    );
    return preg_replace($pattern, $replace, $str);
}

require_once('../settings.inc.php');
if(file_exists(X2_PROJECT ."/settings.inc.php")){
    require_once(X2_PROJECT ."/settings.inc.php");
}
require_once(X2 .'/functions.inc.php');
require_once(X2 ."/classes/myDB/myDB.class.php");
require_once(X2 ."/classes/x2.class.php");
$x2 = x2::getInstance();

$action = isset($_REQUEST['action'])? $_REQUEST['action'] : 'view';
$url = isset($_REQUEST['url'])? $_REQUEST['url'] : "";
$js = "alert('При выполнении запроса произошла ошибка')";

switch($action){
  case 'moveUp': // Сдвиг вверх
    header("Content-type: text/xml; charset=UTF-8");
    if($x2 -> moveNodeUp($url)){
      exit('<responce description="Документ перемещен"/>');
    } else {
      exit('<error description="Не удалось переместить документ"/>');
    }
  break;

  case 'moveDown': // сдвиг вниз
    header("Content-type: text/xml; charset=UTF-8");
    if($x2 -> moveNodeDown($url)){
      exit('<responce description="Документ перемещен"/>');
    } else {
      exit('<error description="Не удалось переместить документ"/>');
    }
  break;

  case 'remove': // Удаление - проверить бы надо
    header("Content-type: text/xml; charset=UTF-8");
    if(count($_GET) > 0 && isset($_GET['url'])){
//        if($x2 -> user -> userInfo['create'] == 1 || $x2 -> user -> userInfo['update'] == 1){
            if($x2 -> removeNode($url)){
                exit('<responce description="Документ удален"/>');
            } else {
                exit('<error description="Не удалось удалить документ"/>');
            }
//	      } else {
//	          $js = "alert("Доступ запрещен")";
//        }
    }
  break;

/*  case 'load': // Подгрузка детей узла - работает
    header("Content-type: text/xml; charset=UTF-8");
    $st = $x2 -> getSubTree($parent);
    if($st){
      $dom = domxml_open_mem($st);
      $xsl = domxml_xslt_stylesheet_file(localURLFix("../xml/subtree.xsl"));
      $result =  $xsl -> process($dom);
      exit($xsl -> result_dump_mem($result));
    } else {
      exit('<error description="Не удалось загрузить"/>');
    }
  break;*/

  case 'create': // Создание нового узла - точнее, обработка уже пришедших данных
    if($x2 -> urlExists($_POST['url'])){
      $js = "alert('Документ с таким адресом уже существует, попробуйте задать другой URL'); document.forms['x2-doc-info-form'].elements['url'].focus()";
    } else {
      if($x2 -> createNode($_POST) > 0){
        $js = "top.location.href='".$_POST['url']."';";
      } else {
        $js = "top.__TD.showDebug('".jsAddSlashes(var_export($x2, 1))."');";
//        $js = "alert('При обновлении информации произошла ошибка.\\nПопробуйте повторить запрос через несколько секунд.');";
      }
    }
  break;

  case 'update':
    if($x2 -> updateNode($_POST)){
      $js = "top.location.reload(true);";
    } else {
      $js = "alert('При обновлении информации произошла ошибка.\\nПопробуйте повторить запрос через несколько секунд.');";
    }
  break;

  default:
        $js = "";
}
?>
<html>
<body>
<?php
if($js != '') echo "<script type=\"text/javascript\">\n", $js, "\n</script>";
?>
</script>
</body>
</html>